home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Tcl-Tk 8.0 / Pre-installed version / tcl8.0 / tests / winPipe.test < prev   
Encoding:
Text File  |  1997-08-15  |  10.0 KB  |  290 lines  |  [TEXT/ALFA]

  1. # winPipe.test --
  2. #
  3. # This file contains a collection of tests for tclWinPipe.c
  4.  
  5. # Sourcing this file into Tcl runs the tests and generates output for 
  6. # errors.  No output means no errors were found.
  7. #
  8. # Copyright (c) 1996 Sun Microsystems, Inc.
  9. #
  10. # See the file "license.terms" for information on usage and redistribution
  11. # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  12. #
  13. # SCCS: @(#) winPipe.test 1.9 97/08/05 11:44:28
  14.  
  15. if {$tcl_platform(platform) != "windows"} {
  16.     return
  17. }
  18.  
  19. set cat16 [file join $tcl_library ../win/cat16.exe]
  20. set cat32 [file join $tcl_library ../win/cat32.exe]
  21.  
  22. if {[string compare test [info procs test]] == 1} then {source defs}
  23.  
  24. if [catch {puts console1 ""}] {
  25.     set testConfig(AllocConsole) 1
  26. } else {
  27.     set testConfig(.console) 1
  28. }
  29.  
  30. set big aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n
  31. append big $big
  32. append big $big    
  33. append big $big
  34. append big $big
  35. append big $big
  36. append big $big
  37.  
  38. set f [open "little" w] 
  39. puts -nonewline $f "little"
  40. close $f
  41.  
  42. set f [open "big" w]
  43. puts -nonewline $f $big
  44. close $f
  45.  
  46. proc contents {file} {
  47.     set f [open $file r]
  48.     set r [read $f]
  49.     close $f
  50.     set r
  51. }
  52.  
  53. if {$testConfig(stdio) && [file exists $cat32]} {
  54. test winpipe-1.1 {32 bit comprehensive tests: from little file} {
  55.     exec $cat32 < little > stdout 2> stderr
  56.     list [contents stdout] [contents stderr]
  57. } "little stderr32"
  58. test winpipe-1.2 {32 bit comprehensive tests: from big file} {
  59.     exec $cat32 < big > stdout 2> stderr
  60.     list [contents stdout] [contents stderr]
  61. } "{$big} stderr32"
  62. test winpipe-1.3 {32 bit comprehensive tests: a little from pipe} {nt} {
  63.     exec more < little | $cat32 > stdout 2> stderr
  64.     list [contents stdout] [contents stderr]
  65. } "{little\n} stderr32"
  66. test winpipe-1.4 {32 bit comprehensive tests: a little from pipe} {95} {
  67.     exec more < little |& $cat32 > stdout 2> stderr
  68.     list [contents stdout] [contents stderr]
  69. } "{\nlittle} stderr32"
  70. test winpipe-1.5 {32 bit comprehensive tests: a lot from pipe} {nt} {
  71.     exec more < big | $cat32 > stdout 2> stderr
  72.     list [contents stdout] [contents stderr]
  73. } "{$big} stderr32"
  74. test winpipe-1.6 {32 bit comprehensive tests: a lot from pipe} {95} {
  75.     exec command /c type big |& $cat32 > stdout 2> stderr
  76.     list [contents stdout] [contents stderr]
  77. } "{$big} stderr32"
  78. test winpipe-1.7 {32 bit comprehensive tests: from console} {AllocConsole} {
  79.     # would block waiting for human input
  80. } {}
  81. test winpipe-1.8 {32 bit comprehensive tests: from NUL} {
  82.     exec $cat32 < nul > stdout 2> stderr
  83.     list [contents stdout] [contents stderr]
  84. } "{} stderr32"
  85. test winpipe-1.9 {32 bit comprehensive tests: from socket} {
  86.     # doesn't work
  87. } {}
  88. test winpipe-1.10 {32 bit comprehensive tests: from nowhere} {.console} {
  89.     exec $cat32 > stdout 2> stderr
  90.     list [contents stdout] [contents stderr]
  91. } "{} stderr32"
  92. test winpipe-1.11 {32 bit comprehensive tests: from file handle} {
  93.     set f [open "little" r]
  94.     exec $cat32 <@$f > stdout 2> stderr
  95.     close $f
  96.     list [contents stdout] [contents stderr]
  97. } "little stderr32"
  98. test winpipe-1.12 {32 bit comprehensive tests: read from application} {
  99.     set f [open "|$cat32 < little" r]
  100.     gets $f line
  101.     catch {close $f} msg
  102.     list $line $msg
  103. } "little stderr32"
  104. test winpipe-1.13 {32 bit comprehensive tests: a little to file} {
  105.     exec $cat32 < little > stdout 2> stderr
  106.     list [contents stdout] [contents stderr]
  107. } "little stderr32"
  108. test winpipe-1.14 {32 bit comprehensive tests: a lot to file} {
  109.     exec $cat32 < big > stdout 2> stderr
  110.     list [contents stdout] [contents stderr]
  111. } "{$big} stderr32"
  112. test winpipe-1.15 {32 bit comprehensive tests: a little to pipe} {nt} {
  113.     exec $cat32 < little | more > stdout 2> stderr
  114.     list [contents stdout] [contents stderr]
  115. } "{little\n} stderr32"
  116. test winpipe-1.16 {32 bit comprehensive tests: a little to pipe} {95} {
  117.     exec $cat32 < little | more > stdout 2> stderr
  118.     list [contents stdout] [contents stderr]
  119. } "{\nlittle} stderr32"
  120. test winpipe-1.17 {32 bit comprehensive tests: a lot to pipe} {nt} {
  121.     exec $cat32 < big | more > stdout 2> stderr
  122.     list [contents stdout] [contents stderr]
  123. } "{$big\n} stderr32"
  124. test winpipe-1.18 {32 bit comprehensive tests: a lot to pipe} {95} {
  125.     exec $cat32 < big | more > stdout 2> stderr
  126.     list [contents stdout] [contents stderr]
  127. } "{\n$big} stderr32"
  128. test winpipe-1.19 {32 bit comprehensive tests: to console} {
  129.     catch {exec $cat32 << "You should see this\n" >@stdout} msg
  130.     set msg
  131. } stderr32
  132. test winpipe-1.20 {32 bit comprehensive tests: to NUL} {
  133.     # some apps hang when sending a large amount to NUL.  $cat32 isn't one.
  134.     catch {exec $cat32 < big > nul} msg
  135.     set msg
  136. } stderr32
  137. test winpipe-1.21 {32 bit comprehensive tests: to nowhere} {.console} {
  138.     exec $cat32 < big >&@stdout 
  139. } {}
  140. test winpipe-1.22 {32 bit comprehensive tests: to file handle} {
  141.     set f1 [open "stdout" w]
  142.     set f2 [open "stderr" w]
  143.     exec $cat32 < little >@$f1 2>@$f2
  144.     close $f1
  145.     close $f2
  146.     list [contents stdout] [contents stderr]
  147. } "little stderr32"
  148. test winpipe-1.23 {32 bit comprehensive tests: write to application} {
  149.     set f [open "|$cat32 > stdout" w]
  150.     puts -nonewline $f "foo"
  151.     catch {close $f} msg
  152.     list [contents stdout] $msg
  153. } "foo stderr32"
  154. test winpipe-1.24 {32 bit comprehensive tests: read/write application} {
  155.     set f [open "|$cat32" r+]
  156.     puts $f $big
  157.     puts $f \032
  158.     flush $f
  159.     set r [read $f 64]
  160.     catch {close $f}
  161.     set r
  162. } "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  163. test winpipe-1.25 {32 bit comprehensive tests: to socket} {
  164.     # doesn't work
  165. } {}
  166. }
  167.  
  168. set stderr16 "stderr16"
  169. if {$tcl_platform(os) == "Win32s"} {
  170.     set stderr16 "{}"
  171. }
  172. if [file exists $cat16] {
  173. test winpipe-2.1 {16 bit comprehensive tests: from little file} {
  174.     exec $cat16 < little > stdout 2> stderr
  175.     list [contents stdout] [contents stderr]
  176. } "little $stderr16"
  177. test winpipe-2.2 {16 bit comprehensive tests: from big file} {
  178.     exec $cat16 < big > stdout 2> stderr
  179.     list [contents stdout] [contents stderr] 
  180. } "{$big} $stderr16"
  181. test winpipe-2.3 {16 bit comprehensive tests: a little from pipe} {nt} {
  182.     exec more < little | $cat16 > stdout 2> stderr
  183.     list [contents stdout] [contents stderr]
  184. } "{little\n} stderr16"
  185. test winpipe-2.4 {16 bit comprehensive tests: a little from pipe} {95} {
  186.     exec more < little | $cat16 > stdout 2> stderr
  187.     list [contents stdout] [contents stderr]
  188. } "{\nlittle} stderr16"
  189. test winpipe-2.5 {16 bit comprehensive tests: a lot from pipe} {nt} {
  190.     exec $cat16 < big | $cat16 > stdout 2> stderr
  191.     list [contents stdout] [contents stderr] 
  192. } "{$big} stderr16stderr16"
  193. test winpipe-2.6 {16 bit comprehensive tests: a lot from pipe} {95} {
  194.     exec more < big | $cat16 > stdout 2> stderr
  195.     list [contents stdout] [contents stderr] 
  196. } "{\n$big} stderr16"
  197. test winpipe-2.7 {16 bit comprehensive tests: from console} {AllocConsole} {
  198.     # would block waiting for human input
  199. } {}             
  200. test winpipe-2.8 {16 bit comprehensive tests: from NUL} {nt} {
  201.     exec $cat16 < nul > stdout 2> stderr
  202.     list [contents stdout] [contents stderr]
  203. } "{} stderr16"
  204. test winpipe-2.9 {16 bit comprehensive tests: from socket} {
  205.     # doesn't work
  206. } {}
  207. test winpipe-2.10 {16 bit comprehensive tests: from nowhere} {.console} {
  208.     exec $cat16 > stdout 2> stderr
  209.     list [contents stdout] [contents stderr]
  210. } "{} stderr16"
  211. test winpipe-2.11 {16 bit comprehensive tests: from file handle} {
  212.     set f [open "little" r]
  213.     exec $cat16 <@$f > stdout 2> stderr
  214.     close $f
  215.     list [contents stdout] [contents stderr]
  216. } "little $stderr16"
  217. test winpipe-2.12 {16 bit comprehensive tests: read from application} {
  218.     set f [open "|$cat16 < little" r]
  219.     gets $f line
  220.     catch {close $f} msg
  221.     list $line $msg
  222. } "little $stderr16"
  223. test winpipe-2.13 {16 bit comprehensive tests: a little to file} {
  224.     exec $cat16 < little > stdout 2> stderr
  225.     list [contents stdout] [contents stderr]
  226. } "little $stderr16"
  227. test winpipe-2.14 {16 bit comprehensive tests: a lot to file} {
  228.     exec $cat16 < big > stdout 2> stderr
  229.     list [contents stdout] [contents stderr]
  230. } "{$big} $stderr16"
  231. test winpipe-2.15 {16 bit comprehensive tests: a little to pipe} {nt} {
  232.     catch {exec $cat16 < little | more > stdout 2> stderr}
  233.     list [contents stdout] [contents stderr]
  234. } "{little\n} stderr16"
  235. test winpipe-2.16 {16 bit comprehensive tests: a little to pipe} {95} {
  236.     exec $cat16 < little | more > stdout 2> stderr
  237.     list [contents stdout] [contents stderr]
  238. } "{\nlittle} stderr16"
  239. test winpipe-2.17 {16 bit comprehensive tests: a lot to pipe} {nt} {
  240.     catch {exec $cat16 < big | more > stdout 2> stderr}
  241.     list [contents stdout] [contents stderr]
  242. } "{$big\n} stderr16"
  243. test winpipe-2.18 {16 bit comprehensive tests: a lot to pipe} {95} {
  244.     exec $cat16 < big | more > stdout 2> stderr
  245.     list [contents stdout] [contents stderr]
  246. } "{\n$big} stderr16"
  247. test winpipe-2.19 {16 bit comprehensive tests: to console} {
  248.     catch {exec $cat16 << "You should see this\n" >@stdout} msg
  249.     set msg
  250. } [lindex $stderr16 0]
  251. test winpipe-2.20 {16 bit comprehensive tests: to NUL} {nt} {
  252.     # some apps hang when sending a large amount to NUL.  cat16 isn't one.
  253.     catch {exec $cat16 < big > nul} msg
  254.     set msg
  255. } stderr16
  256. test winpipe-2.21 {16 bit comprehensive tests: to nowhere} {.console} {
  257.     exec $cat16 < big >&@stdout 
  258. } {}
  259. test winpipe-2.22 {16 bit comprehensive tests: to file handle} {
  260.     set f1 [open "stdout" w]
  261.     set f2 [open "stderr" w]
  262.     exec $cat16 < little >@$f1 2>@$f2
  263.     close $f1
  264.     close $f2
  265.     list [contents stdout] [contents stderr]
  266. } "little $stderr16"
  267. test winpipe-2.23 {16 bit comprehensive tests: write to application} {!win32s} {
  268.     set f [open "|$cat16 > stdout" w]
  269.     puts -nonewline $f "foo"
  270.     catch {close $f} msg
  271.     list [contents stdout] $msg
  272. } "foo stderr16"
  273. test winpipe-2.24 {16 bit comprehensive tests: read/write application} {nt} {
  274.     set f [open "|$cat16" r+]
  275.     puts $f $big
  276.     puts $f \032
  277.     flush $f
  278.     set r [read $f 64]
  279.     catch {close $f}
  280.     set r
  281. } "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  282. test winpipe-2.25 {16 bit comprehensive tests: to socket} {
  283.     # doesn't work
  284. } {}
  285. }
  286.  
  287. file delete big little
  288.  
  289.